package com.lzs.bootsafety.business.moni.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.lzs.bootsafety.business.moni.entity.SysOnlineUser;
import com.lzs.bootsafety.business.moni.mapper.SysOnlineUserMapper;
import com.lzs.bootsafety.business.moni.service.SysOnlineUserService;
import com.lzs.bootsafety.common.util.PageUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * @Author LiuZhanShi
 * @Date 2020/7/28 14:32
 * @Version 1.0
 */
@Service
public class SysOnlineUserServiceimpl implements SysOnlineUserService {
    @Autowired
    private SysOnlineUserMapper userOnlineDao;
    /**
     * 通过会话序号查询信息
     *
     * @param sessionId 会话ID
     * @return 在线用户信息
     */
    @Override
    public SysOnlineUser selectOnlineById(String sessionId){
        return userOnlineDao.selectOnlineById(sessionId);
    }

    /**
     * 通过会话序号删除信息
     *
     * @param sessionId 会话ID
     * @return 在线用户信息
     */
    @Override
    public void deleteOnlineById(String sessionId){
        SysOnlineUser userOnline = selectOnlineById(sessionId);
        if (userOnline!=null)
        {
            userOnlineDao.deleteOnlineById(sessionId);
        }
    }

    /**
     * 通过会话序号删除信息
     *
     * @param sessions 会话ID集合
     * @return 在线用户信息
     */
    @Override
    public void batchDeleteOnline(List<String> sessions){
        for (String sessionId : sessions){
            SysOnlineUser userOnline = selectOnlineById(sessionId);
            if (userOnline!=null){
                userOnlineDao.deleteOnlineById(sessionId);
            }
        }
    }

    /**
     * 保存会话信息
     *
     * @param online 会话信息
     */
    @Override
    public void saveOnline(SysOnlineUser online){
        userOnlineDao.saveOnline(online);
    }

    /**
     * 查询会话集合
     *
     * @param userOnline 在线用户
     */
    @Override
    public PageInfo<SysOnlineUser> selectUserOnlineList(SysOnlineUser userOnline){
        PageHelper.startPage(PageUtil.getPage(userOnline.getPage()),PageUtil.getLimit(userOnline.getLimit()));
        List<SysOnlineUser> sysOnlineUserList = userOnlineDao.selectUserOnlineList(userOnline);
        return new PageInfo<SysOnlineUser>(sysOnlineUserList);
    }

    /**
     * 强退用户
     *
     * @param sessionId 会话ID
     */
    @Override
    public void forceLogout(String sessionId){
        userOnlineDao.deleteOnlineById(sessionId);
    }

    /**
     * 查询会话集合
     *
     * @param expiredDate 失效日期
     */
    @Override
    public List<SysOnlineUser> selectOnlineByExpired(Date expiredDate){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return userOnlineDao.selectOnlineByExpired(sdf.format(expiredDate));
    }
}
